//package com.br.cloud.br.common.core.oauth;
//
//import lombok.SneakyThrows;
//import lombok.extern.slf4j.Slf4j;
//import org.codehaus.jackson.map.ObjectMapper;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.authority.AuthorityUtils;
//import org.springframework.security.core.authority.SimpleGrantedAuthority;
//import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
//import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
//import org.springframework.security.oauth2.core.user.OAuth2User;
//import org.springframework.web.client.RestTemplate;
//
//import java.util.List;
//import java.util.Map;
//
///**
// * @author yzp
// * @date 2021/2/18 16:40
// */
//@Slf4j
//public class HaierOAuth2UserService implements OAuth2UserService<OAuth2UserRequest, OAuth2User> {
//    private static final RestTemplate restTemplate = new RestTemplate();
//
//    @SneakyThrows
//    @Override
//    public OAuth2User loadUser(OAuth2UserRequest userRequest) {
//        String accessToken=userRequest.getAccessToken().getTokenValue();
//        String result=restTemplate.getForObject(userRequest.getClientRegistration().getProviderDetails().getUserInfoEndpoint().getUri()+"?access_token="+accessToken+"&client_id="+userRequest.getClientRegistration().getClientId(),String.class);
//        Map<String,Object> map=new ObjectMapper().readValue(result,Map.class);
//        log.info("用户信息:-------------------------------------"+result);
//        HaierUserInfo haierUserInfo=new HaierUserInfo();
//        haierUserInfo.setDisplayName((String) map.get("displayName"));
//        haierUserInfo.setGivenName((String) map.get("givenName"));
//        haierUserInfo.setMail((String) map.get("mail"));
//        haierUserInfo.setLoginName((String) map.get("loginName"));
//        List<String> spRoleList=(List<String>) map.get("spRoleList");
//        List<GrantedAuthority> authorityList = AuthorityUtils.createAuthorityList("ROLE_USER");
//        if(spRoleList!=null&&!spRoleList.isEmpty()){
//            for(String spRole:spRoleList){
//                authorityList.add(new SimpleGrantedAuthority(spRole));
//            }
//        }
//        haierUserInfo.setAuthorities(authorityList);
//        haierUserInfo.setSpRoleList(spRoleList);
//        return haierUserInfo;
//    }
//}
